--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/SidebarLink.test.js ca36d082fdf638f9b4ba25b7e0eddc94cd66f6db (ca36d082) Text, 3.05 KB
Tff7b72import Tb4b4b4{ Te6edf3mount Tb4b4b4} Tff7b72from Ta5d6ff"@vue/test-utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3vi Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3SidebarLink Tff7b72from Ta5d6ff"@/components/SidebarLink.vue"Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"SidebarLink.vue"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3defaultProps Tff7b72= Tb4b4b4{
Te6edf3toTff7b72: Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"test-route" Tb4b4b4}Tb4b4b4,
Te6edf3isCollapsedTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3RouterLinkStub Tff7b72= Tb4b4b4{
Te6edf3templateTff7b72: Ta5d6ff'<slot :href="\'/test\'" :navigate="navigate || (() => {})" :isActive="isActive || false" />'Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4[Ta5d6ff"to"Tb4b4b4, Ta5d6ff"custom"Tb4b4b4, Ta5d6ff"navigate"Tb4b4b4, Ta5d6ff"isActive"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"renders icon and text slots"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountTb4b4b4(Te6edf3SidebarLinkTb4b4b4, Tb4b4b4{
Te6edf3propsTff7b72: Te6edf3defaultPropsTb4b4b4,
Te6edf3slotsTff7b72: Tb4b4b4{
Te6edf3iconTff7b72: Ta5d6ff'<span class="icon">icon</span>'Tb4b4b4,
Te6edf3textTff7b72: Ta5d6ff'<span class="text">Link Text</span>'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3stubsTff7b72: Tb4b4b4{
Te6edf3RouterLinkTff7b72: Te6edf3RouterLinkStubTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff".icon"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff".text"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Link Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"applies collapsed class when isCollapsed is true"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountTb4b4b4(Te6edf3SidebarLinkTb4b4b4, Tb4b4b4{
Te6edf3propsTff7b72: Tb4b4b4{ Tb4b4b4...Te6edf3defaultPropsTb4b4b4, Te6edf3isCollapsedTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3slotsTff7b72: Tb4b4b4{
Te6edf3iconTff7b72: Ta5d6ff'<span class="icon">icon</span>'Tb4b4b4,
Te6edf3textTff7b72: Ta5d6ff'<span class="text">Link Text</span>'Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3stubsTff7b72: Tb4b4b4{
Te6edf3RouterLinkTff7b72: Te6edf3RouterLinkStubTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// v-if="!isCollapsed" means the span with the text won't exist
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff".text"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"emits click event and calls navigate when clicked"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3navigate Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountTb4b4b4(Te6edf3SidebarLinkTb4b4b4, Tb4b4b4{
Te6edf3propsTff7b72: Te6edf3defaultPropsTb4b4b4,
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3stubsTff7b72: Tb4b4b4{
Te6edf3RouterLinkTff7b72: Tb4b4b4{
Te6edf3templateTff7b72: Ta5d6ff'<slot :href="\'/test\'" :navigate="navigate" :isActive="false" />'Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4[Ta5d6ff"to"Tb4b4b4, Ta5d6ff"custom"Tb4b4b4]Tb4b4b4,
Te6edf3setupTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3navigate Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3emittedTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3navigateTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"applies active classes when isActive is true"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountTb4b4b4(Te6edf3SidebarLinkTb4b4b4, Tb4b4b4{
Te6edf3propsTff7b72: Te6edf3defaultPropsTb4b4b4,
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3stubsTff7b72: Tb4b4b4{
Te6edf3RouterLinkTff7b72: Tb4b4b4{
Te6edf3templateTff7b72: Ta5d6ff'<slot :href="\'/test\'" :navigate="() => {}" :isActive="true" />'Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4[Ta5d6ff"to"Tb4b4b4, Ta5d6ff"custom"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// Based on SidebarLink.vue line 8: bg-blue-100 text-blue-800 ...
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4.Te6edf3classesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"bg-blue-100"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────